// FriendRelationServiceImpl.java
package com.baoyouqun.API.friend;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baoyouqun.API.friend.domain.FriendRelation;
import com.baoyouqun.mapper.FriendRelationMapper;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper, FriendRelation> implements FriendRelationService {

    @Override
    public List<FriendRelation> getFriendRelationsByUserId(String userId) {
        return list(
                new LambdaQueryWrapper<FriendRelation>()
                        .eq(FriendRelation::getUserId, userId)
        );
    }

    @Override
    public FriendRelation getFriendRelation(String userId, String friendId) {
        return getOne(
                new LambdaQueryWrapper<FriendRelation>()
                        .eq(FriendRelation::getUserId, userId)
                        .eq(FriendRelation::getFriendId, friendId)
        );
    }

    @Override
    public boolean updateFriendStatus(String userId, String friendId, Integer status) {
        return update(
                new LambdaUpdateWrapper<FriendRelation>()
                        .eq(FriendRelation::getUserId, userId)
                        .eq(FriendRelation::getFriendId, friendId)
                        .set(FriendRelation::getStatus, status)
                        .set(FriendRelation::getUpdateTime, LocalDateTime.now())
        );
    }

    @Override
    public boolean updateFriendRemark(String userId, String friendId, String remark) {
        return update(
                new LambdaUpdateWrapper<FriendRelation>()
                        .eq(FriendRelation::getUserId, userId)
                        .eq(FriendRelation::getFriendId, friendId)
                        .set(FriendRelation::getRemark, remark)
                        .set(FriendRelation::getUpdateTime, LocalDateTime.now())
        );
    }

    @Override
    public boolean deleteFriendRelation(String userId, String friendId) {
        return remove(
                new LambdaQueryWrapper<FriendRelation>()
                        .eq(FriendRelation::getUserId, userId)
                        .eq(FriendRelation::getFriendId, friendId)
        );
    }
}